{{tag>shell Focal Bionic BROUILLON}}

----

====== BASH : Bourne Again Shell ======

BASH est un [[shell]]. C'est le shell de base utilisé dans le [[terminal]], il est bien évidemment libre, sous licence GPL.
La plupart des scripts que vous verrez sur la documentation comporte un [[wpfr>Shebang]]  **#!/bin/bash**, votre système utilisera donc BASH pour interpréter les commandes.

BASH n'est pas totalement compatible avec [[ZSH]], le shell le plus orienté pour l'interactivité avec l'utilisateur.

===== Introduction / Utilisation =====

Commencer par le [[tutoriel:script_shell|tutoriel d'introduction aux scripts shell]]

===== Utilisation avancée =====
==== Tutoriel par lien externe ====
  * [[https://abs.traduc.org/abs-fr/|Guide avancé d'écriture des scripts Bash]]
==== Séparateur de mot ====

L'IFS est le ou les caractères qui servent de séparateur. Voici un bout de code pour comprendre par l'exemple.

<code bash>
phrase="plusieurs mots...
sur une ligne ?"

function afficher_phrase(){
        for chaine in `echo "$phrase"`; do
                echo $chaine
        done
}

afficher_phrase
IFS='
'
echo "Séparateur interne à bash changé"
afficher_phrase
</code>

Plus d'explication [[http://www.linuxquestions.org/questions/programming-9/bash-command-separatorarguments-separator-602542/#post2971876|en anglais]].

==== Une meilleure gestion de l'historique ====

Par défaut, toutes les commandes tapées dans un terminal sont enregistrées dans votre historique et vous pouvez les retrouver en appuyant sur les touches fléchées « haut » et « bas ». La façon dont vous parcourez l'historique peut être améliorée de façon à ce que si vous tapez un début de commande avant votre recherche, vous puissiez accéder uniquement aux entrées commençant par ce que vous venez de taper. Vous me suivez ?

[[:tutoriel:comment_modifier_un_fichier|ouvrez le fichier]] ** ~/.inputrc ** (ou créer-le s'il n'existe pas) et ajoutez-y :
<code>
"\e[A": history-search-backward
"\e[B": history-search-forward</code>

[[:tutoriel:comment_modifier_un_fichier|ouvrez le fichier]] ** ~/.bashrc ** et ajoutez-y :
<code>
shopt -s histappend
PROMPT_COMMAND='history -a'</code>

=====Les fichiers de config BASH=====
====~/.bashrc====
Ce fichier permet la configuration lors du lancement du programme bash.

Il est possible de personnaliser le prompteur :
dans votre éditeur de texte préférer chercher "PS1"((sigle de prompt shell 1)).

Avec [[gedit]] vous pouvez faire //(Ctrl + F)// pour rechercher dans le fichier.
remplacer la première occurrence ou toutes occurrences par cela:
<code bash>PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ '</code>
En supprimant **\h** (nom d'hôte) il n'y a plus le nom de votre ordinateur.
En ajoutant **\n** (saut de ligne) avant le dollars le curseur ira sur une nouvelle ligne.

Il y a beaucoup plus de personnalisation possible mais ne nous étalons pas.

====~/.bash_aliases====
Ce fichier permet de séparer le script ''.bashrc'' des [[alias]].
Vous pouvez mettre des variables dedans qui seront chargées à chaque lancement de terminal.

petit tips, vous pouvez mettre de la couleur dans les pages du man plutôt que d'avoir du blanc.
[[https://blog.shevarezo.fr/post/2018/01/25/comment-avoir-couleurs-pages-man-linux|ce site vous dit comment faire]].\\ Faites vous plaisir avec [[https://misc.flogisoft.com/bash/tip_colors_and_formatting|les choix de couleurs]].

====~/.bash_history====
Hyper utile quand vous utilisez vos flèches pour rechercher une commande.
vous pouvez voir le fichier avec la commande
  history

Pour rechercher bien plus rapidement utilisez (Ctrl+R) dans le terminal puis entrez la chaîne cherchée. //Utilisez plusieurs fois (Ctrl + r) et non pas les flèches pour remonter les commandes qui match//.

====~/.profile====
Comme indiqué dans le fichier il n'est lu que si ''~/.bash_profile'' ou ''~/.bash_login'' n'existe pas.
il permet de prendre en compte de nouveau chemin pour la variable d'environnement PATH.

Par exemple si vous créez un programme, il vous suffira de le mettre dans un nouveau dossier nommé "bin" :
  mkdir ~/bin
et d'y mettre vos programmes

===== Voir aussi =====
  * **(en)** [[https://www.gnu.org/software/bash/|site officiel de bash]]
  * **(fr)** [[variables_d_environnement|Les variables d'environnement]]
  * **(fr)** [[tutoriel:script_shell|Introduction aux scripts shell]]
  * **(fr)** [[wpfr>Bourne-Again_shell]]
----

//Contributeur(s) : [[utilisateurs:Id2ndR]]//